package controll;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;

import modell.Cronograma;

public class CronogramaHibernate implements ICronogramaDAO {

	private Session sessao;

	@SuppressWarnings("unchecked")
	@Override
	public List<Cronograma> listar() {
		Criteria lista = sessao.createCriteria(Cronograma.class);
		return lista.list();
	}

	@Override
	public void excluir(Cronograma cronograma) {
		this.sessao.delete(cronograma);
	}

	@Override
	public void salvar(Cronograma cronograma) {
		this.sessao.save(cronograma);

	}

	@Override
	public void alterar(Cronograma cronograma) {
		this.sessao.update(cronograma);
	}

	public Session getSessao() {
		return sessao;
	}

	public void setSessao(Session sessao) {
		this.sessao = sessao;
	}

	@Override
	public Cronograma buscarPorMes(int mes, int servico) {
		String sql = " from Cronograma c where c.Periodo = :mes and c.Servico = :servico ";
		Query consulta = sessao.createQuery(sql);
		consulta.setInteger("mes",mes);
		consulta.setInteger("servico",servico);
		return (Cronograma) consulta.uniqueResult();
	}

	@Override
	public void excluirPorServico(int servico, int obra) {
		String sql = " DELETE FROM Cronograma c where c.Servico = :servico and c.Obra = :obra";
		Query consulta = sessao.createQuery(sql);
		consulta.setInteger("obra",obra);
		consulta.setInteger("servico",servico);
		consulta.executeUpdate();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Cronograma> buscarCronograma(int servico, int obra) {
		String sql = " from Cronograma c where c.Obra = :obra and c.Servico = :servico ";
		Query consulta = sessao.createQuery(sql);
		consulta.setInteger("servico",servico);
		consulta.setInteger("obra",obra);
		return (List<Cronograma>) consulta.list();
	}
}